Memory watch

ABSTRACT

A method can include receiving memory configuration information that specifies a memory configuration; receiving memory usage information for the memory configuration; analyzing the received memory usage information for a period of time; and, responsive to the analyzing, controlling notification circuitry configured to display a graphical user interface that presents information for physically altering a specified memory configuration. Various other apparatuses, systems, methods, etc., are also disclosed.

TECHNICAL FIELD

Subject matter disclosed herein generally relates to techniques formonitoring memory.

BACKGROUND

Various devices such as computers, tablets, phones, etc., include memorythat may be, at times, insufficient. Devices that rely on random accessmemory (RAM) may or may not have other types of memory or storage toalleviate issues stemming from insufficient RAM. For example, manycomputers include a hard drive, whether a disk drive or a solid-statedrive, that can be used for writing information from RAM to free up someof the RAM. One memory management process is referred to as “paging”,which involves storing information from RAM, as “main memory” or“primary memory”, to a “secondary” storage (or a “tertiary” storage) inthe form of “pages”. Paging may be part of a “virtual memory” strategyfor managing memory of a device. Paging performs tasks such as bookkeeping, “page in” (to transfer a page from a drive to RAM) and “pageout” (to transfer a page from RAM to the drive). Such tasks require timeand place demands on resources, which may diminish user experience or,more generally, performance of a device (e.g., latency of a drive may beseveral orders of magnitude greater than latency of RAM). As describedherein, various technologies, techniques, etc., can monitor memory andoptionally issue notifications, for example, to enhance user experience,device performance, etc.

SUMMARY

A method can include receiving memory configuration information thatspecifies a memory configuration; receiving memory usage information forthe memory configuration; analyzing the received memory usageinformation for a period of time; and, responsive to the analyzing,controlling notification circuitry configured to display a graphicaluser interface that presents information for physically altering thespecified memory configuration. Various other apparatuses, systems,methods, etc., are also disclosed.

BRIEF DESCRIPTION OF THE DRAWINGS

Features and advantages of the described implementations can be morereadily understood by reference to the following description taken inconjunction with the accompanying drawings.

FIG. 1 is a diagram of an example scenario illustrating a memory usageissue;

FIG. 2 is a diagram of an example of a method for monitoring memoryusage;

FIG. 3 is a diagram of an example of a graphical user interface forreporting information related to memory;

FIG. 4 is a diagram of examples of classes and memory managementmodules;

FIG. 5 is a diagram of an example of a method;

FIG. 6 is a diagram of an example of a system;

FIG. 7 is a diagram of an example of a method;

FIG. 8 is a diagram of an example of a method and an example of a deviceand network resources;

FIG. 9 is a diagram of an example of a system and examples of circuitry;and

FIG. 10 is a diagram of an example of a system, which may be part of adevice.

DETAILED DESCRIPTION

The following description includes the best mode presently contemplatedfor practicing the described implementations. This description is not tobe taken in a limiting sense, but rather is made merely for the purposeof describing the general principles of the implementations. The scopeof the described implementations should be ascertained with reference tothe issued claims.

Various technologies, techniques, etc., are described herein thatpertain to memory for a device such as a notebook computer, a tablet, asmart phone, etc. As an example, a method can include receiving memoryconfiguration information that specifies a memory configuration of adevice; receiving memory usage information for the memory configurationof the device; analyzing the received memory usage information for aperiod of time; and, responsive to such analyzing, controllingnotification circuitry configured to display a graphical user interfacethat presents information for physically altering a specified memoryconfiguration of the device. Such a method may notify a user (e.g., byissuing a notification) that more memory could improve performance ofthe device, for example, based on actual memory usage.

As an example of a scenario where the aforementioned method may findbenefit, consider a device that includes the WINDOWS® “Task Manager”, anapplication included with some WINDOWS® operating systems (OSs) thatprovides information about computer performance, running applications,processes, CPU usage, commit charge, memory, network activity andstatistics, logged-in users, and system services. If the device is usingmost of its available memory, its OS will typically release memory bywriting the least used memory contents to a pagefile on a drive (e.g.,secondary storage, etc.). As memory is required, the pagefile is againwritten to. As mentioned, paging tends to cause a degradation of systemperformance (e.g., where drive I/O is much less efficient than RAM I/O).Further, as virtual memory address space is mapped to physical memory ondemand, RAM tends to appear fully utilized according to the Task Managerapplication (e.g., all the time). Under such circumstances, theaforementioned method may acquire memory usage information (e.g., usinga threshold that is less than a paging threshold), analyze theinformation and, based on such an analysis, issue a notification toinform a user (or other) that physically altering device memory may bebeneficial. In other words, a user would not need to invoke and decipherinformation presented by the Task Manager application (e.g. the TaskManager GUI) in an attempt to determine whether adding more physicalmemory would be possible or beneficial. Such a method may optionally beimplemented in situations where paging has been disabled (e.g., no pagefile exists).

As an example, a method may include implementing a performancemonitoring tool of an OS (e.g., consider the WINDOWS® PerformanceMonitor, which can examine how programs affect performance, both inreal-time and by collecting log data for later analysis). In such anexample, the method may cause the tool to start a data collectionroutine that monitors available bytes in memory, to log an event whenthe available bytes are less than X % (e.g., 10% or other value) of thetotal memory available and to log an event when the available bytes aregreater than Y % (e.g., 10% or other value). The tool or the method mayprovide for time stamping of log events (e.g., a time value). Given suchmemory usage information, the method can determine how long a low memorysituation existed. Further, after having multiple occasions of a lowmemory situation(s) or, for example, after deciding longevity (e.g.,duration) of a low memory situation(s), the method can issue an alert,for example, to inform a user that adding more memory is likely to bebeneficial.

As a specific example, consider a WINDOWS® OS that includes the WINDOWS®Management Instrumentation (WMI) infrastructure for management of dataand operations. The WMI infrastructure allows for execution of scriptsor applications to automate administrative tasks on local or remotecomputers and to supply management data to other parts of the OS. Inthis particular example, a method can include executing a script,application, etc., for obtaining total physical memory values and takinga selected threshold (e.g., 85%) as a value for purposes of monitoring.The method may periodically sample available memory (e.g., via amonitoring tool within the WMI infrastructure) to monitor when memoryutilization exceeds the selected threshold. The method may instruct theinfrastructure to log an event when the threshold is exceeded (e.g.,capturing at least the time and optionally a date). The method mayinclude analyzing logged events, for example, based on a number ofevents over a time interval, duration of exceeded thresholds over agiven time, etc., and issuing a notification via an interface (e.g.,video, sound, vibration, electronic communication, etc.) that indicatesthat adding more memory will improve system performance.

FIG. 1 shows an example of a scenario 100 experienced by a user 101using a device 110 that unfolds with respect to time. At a time 102, theuser 101 commences use of the device 110, which includes a display 111,one or more processors 112 (e.g., CPUs, GPUs, etc.), RAM 114 accessiblyby the one or more processors 112 and storage 116, which may besecondary storage, tertiary storage, etc., and optionally configured tostore a page file for purposes of paging. As shown, the storage 116 maybe local, remote or both local and remote storage may be provided. Inthe example of FIG. 1, the storage 116 stores various applications anddata.

At time 104, the user 101 has loaded one or more applications and datafrom storage such as the storage 116 for execution by the device 110.The one or more applications and data may be invoked as singleinstances, multiple instances, etc., as represented by various userinterfaces (UIs) 120 on the display 111 of the device 110. For example,the user 101 may invoke a browser application that loads large videofiles via the Internet where the browser application has a video plug-infor performing decoding of compressed video files for rendering to adisplay 111 of the device 110. As another example, the user 1010 mayinvoke a game application that renders detailed three-dimensional scenesat a high-frame rate. Such processes may be resource intensive and causethe device 110 to use most of its RAM 114 and to implement paging (e.g.,writing information from the RAM 114 to the storage 116). As indicated,the user 101 may become frustrated by the performance of the device 110,as videos glitch, a game stutters, etc. Such issues may stem frompaging, especially where paging has led to excessive drive fragmentation(e.g., use of a device with insufficient memory can over time compoundperformance problems).

At time 106, the user 101, who knows a little about computers, resortsto invoking a task manager application 130 (e.g., entering aCTRL-ALT-DEL key command and selecting “Start Task Manager”). Clickingon a “Performance” tab, the application 130 renders a GUI 135 to thedisplay 111. The user 101, with his little knowledge, is confused as hecannot decipher the various types of memory or what they mean in termsof the poor performance experienced at time 104. For example, the user101 may think “What does ‘Physical Memory: 71%’ mean?” or “Seems like Ihave adequate memory available?”. Given his limited knowledge, the user101 does not readily know what to do to address the poor performanceexperience.

FIG. 2 shows an example of a method 200, along with various circuitry,information, etc. In a commencement block 210, the method 200 commencesmonitoring, for example, via monitoring circuitry 212 that operatesaccording to one or more settings 214, which may be predetermined, userselectable, adjusted via learning, etc. As an example, the one or moresettings 214 can include a threshold that corresponds to a memory usagevalue, percentage, fraction, etc., optionally referenced with respect toa total amount of installed memory of a device (e.g., a specifiedphysical memory configuration of a device). The commencement block 210may respond at boot, wake-up, etc., and commence the method 200. In amonitor block 220, the method 200 includes monitoring memory usage forsome period or periods of time, for example, as indicated in a plot 225of RAM versus time, which is shown as including a threshold (e.g., aconstant threshold for the time of the plot 225) and various events(e.g., times associated with crossing the threshold). Thus, as anexample, the monitor block 220 may collect memory usage information withrespect to time where such information may optionally be in the form oflogged events. In an analysis block 230, the method 200 includesanalyzing memory usage, as monitored, for example, using analysiscircuitry 232 and data 234. As to the data 234, they may include loggedevent data, sampled data, etc. The data 234 may include local, remote orlocal and remote data. The analysis circuitry 232 may analyze the data234 using one or more analysis algorithms. As an example, an algorithmmay determine one or more of a number of events for a given time,duration of memory usage above a threshold for a given time (e.g., timebetween an up and down threshold crossing events), average memory usagefor a given time, etc. In a report block 240, the method 200 includesreporting on memory usage, for example, by using report circuitry 242,which may implement one or more report actions 244 (e.g., a triggercommand, a script initiation command, etc.).

The method 200, if implemented in the scenario 100 of FIG. 1, mayprovide the user 101 with a report, for example, by displaying agraphical user interface that presents information for physicallyaltering a specified memory configuration. FIG. 3 shows an example ofsuch a report or notification in the form of a graphical user interface(GUI) 300.

The GUI 300 is shown as a 2-D visual rendering as may appear on a screen(e.g., display, projection, etc.) based, for example, on instructions ina mark-up language (e.g., HTML) or other format. Such instructions mayoptionally adhere to a style sheet language (e.g., CSS). As an example,data, logic, instructions, etc., may be determined by the report block240 to cause rendering of the GUI 300, which may render image data,graphics via graphics processing, etc.

In the example of FIG. 3, the GUI 300 includes various fields orgraphics, which may optionally respond to user input (e.g., via apointing device, voice command, touch, etc.). For example, the GUI 300includes various navigation graphics 302 (e.g., where a “System” graphicis active), a search field 304, an informational graphic 306, a systeminformation graphic 308, a field indicating a general assessment 310(e.g., “You have enough memory”), a field for installed and maximummemory 320, graphics for memory slot information 330, a field forinformation as to memory slots 340 (e.g., “you can replace the memory inthis slot up to 8 GB”), and a graphic with one or more selectableoptions 350. In the example of FIG. 3, the option “Optimize” is selectedand a field presented with information as to optimizing performance(e.g., “try closing some programs that you are not using”). As shown,other options include a memory upgrade option (e.g., “Get more memory”)and an information option (e.g., “Tips”).

As an example, notification circuitry (e.g., report circuitry 242 ofFIG. 2) may be configured to display the GUI 300, which presentsinformation for physically altering a specified memory configuration. Inthis example, a specified memory configuration may be “Slot 1, 4 GB” and“Slot 2, 4 GB”. Information for physically altering a specified memoryconfiguration may be, for example, “cannot alter, at maximum capacity”,“replace memory in Slot X or Y with Z GB”, “insert memory in empty SlotX”, “replace memory in Slots X and Y with Z GB”, etc.

In the example of FIG. 3, the memory upgrade option may, upon selection,initiate Internet navigation to a website where appropriate memory maybe purchased, ordered, etc. For example, upon selection of the memoryupgrade option, information may be communicated to an Internet store andinput into an application programming interface of the Internet store,search engine, etc., such that the Internet navigation navigates to awebpage of the Internet store that includes information for one or morememories that would be appropriate for memory upgrade. Further, such amethod may include manufacturer information for the device (e.g., thenotebook computer 110) or other information (e.g., a valued customer ID)that can apply a coupon, discount, program award, etc., for purchase ofmemory. Accordingly, report circuitry (e.g., for notification) maytransmit information via an Internet connection to assist a user inpurchasing memory, for example, in response to a determination that morememory could enhance performance. As an example, a GUI may include anoption for a user to input one or more credentials, favorite vendors,website URLs, etc., to assist a user in enhancing performance of herdevice (e.g., “Support” option may provide one or more fields, controls,etc., that allow a user to input, discover, authorize, etc., appropriateinformation, actions, etc.). As an example, a GUI may optionally displayadvertisements, coupons, etc., for purchase of memory where activating alink (e.g., clicking on a graphic) navigates to an Internet store.

FIG. 4 shows example classes 410, 420 and 430 as well as some examplesof memory management modules 450. Such classes, modules, othertechniques, etc., may be implemented for purposes of monitoring memory.As to the example class 410, an operating system class includes one ormore properties such as a “FreePhysicalMemory” property. Script, code,etc., may be written or provided that invokes the class using a propertyto return a value (e.g., representing free physical memory, etc.). As tothe example class 420, a computer.info class includes one or moreproperties such as an “AvailablePhysicalMemory” property and a“TotalPhysicalMemory” property. As an example, script, code, etc., maybe written or provided that invokes the class using a property to returna value (e.g., representing available memory, total memory, etc.). As tothe example class 430, a log event class may include one or moreproperties such as those shown in FIG. 4. For example, the log eventclass may be invoked using script, code, etc., such that a value isreturned for a property that may include a date and a time. As shown inFIG. 4, information such as messages, event type, computer name, user,etc., may be returned by invoking a class. Such classes may optionallybe in the form of object classes, for example, as in an object-orientedprogramming framework. Such classes may optionally be provided asfeatures of an operating system. Such classes may optionally be invokedfor a local device, a remote device, local and remote devices, etc.

As to the memory management modules 450, these may include a logicmodule 452, a message module 454, a time module 456 (e.g., optionallyfor date as well as time), a user module 458, a UI module 462, acommunication module 464, a storage module 466 and one or more othermodules 468. Referring to FIG. 2, the circuitry (e.g., 212, 232 and 242)may optionally include one or more of the modules 450. Such modules mayalso include script, code, etc., that can invoke one or more classes(e.g., using one or more properties) to cause monitoring, analyzing,reporting, notifying, etc. As an example, where a device is used by morethan one user, by invoking a class that includes a “User” property,memory usage information may be analyzed, reported, etc., on auser-by-user basis. Consider a brother (User 1) and a sister (User 2)where the sister plays a game that demands a lot of memory. An analysismay determine that User 2 is using much more memory than User 1 andissue a report via email to a responsible parent that the device couldbenefit from a memory upgrade (or that User 2 should consider using adifferent device, e.g., where its memory is at capacity).

FIG. 5 shows an example of a method 510 that includes a boot block 512for booting an OS on a device, an initiation block 514 for initiating amemory monitor, and a monitor block 516 for monitoring memory (e.g.,using the memory monitor). As shown in the example of FIG. 5, a decisionblock 518 follows the monitor block 516 to decide whether the method 510should issue a notification (e.g., as to memory usage). Where thedecision block 518 decides that no notification should be issued, themethod 510 continues at the monitor block 516. However, if the decisionblock 518 decides that a notification should be issued, then anotification block 520 provides for issuing a notification (e.g., via aGUI or other mechanism). In such a manner, notification circuitry may becontrolled. Another decision block 522 follows that decides if useraction has been received in response to the issued notification. If thedecision block 522 decides that no user action has been received (e.g.,to take particular action with respect to memory), then the method 510continues at the monitor block 516. However, if the decision block 522decides that user action has been received, the method 516 continues atan implementation block 524 that may implement action (e.g., presentinformation, navigate to a website, send a communication, shut down adevice for memory installation, etc.).

FIG. 6 shows an example of a system 600 that includes analysis circuitry632 to analyze data 634 and report circuitry 642 to provide one or morereports, whether local 645, remote 647 or local 645 and remote 647. Inthe example of FIG. 6, the data 634 includes time data for memorycrossing a threshold (Th). Such data may optionally be collected usingmonitoring circuitry. Such data may be provided by a device, via anetwork connection, etc. Such data may optionally pertain to more thanone user, more than one device, etc. For example, the data 634 mayinclude additional data, optionally indicating user, device,applications, memory configuration, etc.

The analysis circuitry 632 can include one or more of a history module660, a manufacturing module 670, a logic module 680 and an applicationinformation module 690. Such modules may be implemented to analyze thedata, optionally providing additional data. For example, the historymodule 660 may include memory data 662 and system data 664. Themanufacturer module 670 may include information as to patches 672 (e.g.,BIOS, OS, etc.) and knowledge base (KB) information 674, which mayindicate types of memory usage issues and possible solutions or tips toimprove performance. Further, the manufacturer module 670 may provideinformation as to resetting one or more settings associated with theanalysis circuitry 632 in response to a change in configuration ofphysical memory of a device. Such information may optionally be providedor determined, for example, via access to system information andcomparing system information to stored information for the system todetermine if a change has occurred.

The logic module 680 may include logic for memory issues 682 andlearning logic 684 (e.g., to learn from user selections, user usage of adevice, etc.). As an example, the learning logic 684 may learn thatmemory usage impacts performance when a user uses an application X andan application Y concurrently. Such logic may allow the analysiscircuitry 632 to determine that memory usage will not impact performanceif the user uses only one of these applications at a time. In turn, thereport circuitry 642 may issue a notification that notifies the user touse only one of application X or application Y at a time to improveperformance (e.g., as a tip).

As to the application information module 690, such information mayinclude memory leak information 692 and settings information 694. Forexample, various web browser applications have been known to experiencememory leakage (e.g., memory not released after usage, excessivecaching, etc.). Such memory leaks can, at times, consume a gigabyte ormore of memory. Where the analysis circuitry 632 has access to suchinformation, it may inform the report circuitry 642 to report theapplication to a user (e.g., application Z has memory leak issues,settings XY recommended). In such a manner, the analysis circuitry 632may ascertain whether a memory usage pattern, trend, etc., is actuallydue to an application or improper settings with respect to anapplication.

As indicated, the report circuitry 642 may include capabilities toreport locally 645, remotely 647 or both locally 645 and remotely 647.As an example, the report circuitry 642 may be configured as abackground process where reporting to a user's device is disabled andwhere reports are issued to a manufacturer (e.g., where a manufacturermonitoring option has been accepted by a user or owner of a device). Asan example of both local and remote reporting, consider a GUI renderedto a display of the device and an email sent to the owner or user of thedevice. Such reporting may occur relatively simultaneously or may occurat different times. For example, a GUI may be rendered once an issue isuncovered by an analysis and an email may be sent if the issue occursone or more subsequent times (e.g., “please note that a memory usagetrend exists that may be addressed by doing XYZ”).

FIG. 7 shows an example of a method 710 that includes a provision block712 for providing data (e.g., optionally data 713), an analysis block714 for analyzing data (e.g., optionally to provide statistics 715), anda classification block 716 to classify data (e.g., optionally asclassified data 717). In the example of FIG. 7, the data 713 includestime information for memory usage with respect to a threshold (e.g.,greater than or less than a threshold, etc.). The statistics 715 includenumber of events based on time period of each event, as well as a totalamount of time for memory usage in excess of the threshold and anaverage percent of memory used during that time. The classified data 717shows, for each time period, an activity report classification alongwith a logical trigger (e.g., to trigger action such as issuance of anotification or notifications).

In the example of FIG. 7, the classifications include “insignificant”,“download OS patches”, “intermittent”, “persistent”, “high frequencyintermittent”, and “low frequency intermittent”. To classify, theclassification block 716 may combine time of day and memory usagepattern. For example, during the time period of 03:00:00 to 6:00:00,which is in the middle of the night, the memory usage pattern shows thatmemory usage exceed a threshold for a period of fifteen minutes. Logic(e.g., programmed, learned, etc.) may determine that such activity islikely to be associated with installation of one or more OS patches.Accordingly, the classification block 716 may classify that activity asbeing related to download of OS patches, which does not requiretriggering of any reporting (e.g., Trigger “N”). As to “high frequencyintermittent”, at time period 12:00:00 to 15:00:00, this corresponds to41 events (up and down) for a total time of 85 minutes (e.g., about halfof the entire 180 minute time period). As the memory usage, on average,was 93 percent, this activity is classified as being of the type totrigger reporting (e.g., Trigger “Y”). The other type classified astriggering reporting is “persistent”, which corresponds to the timeperiod 09:00:00 to 12:00:00, where, although few events, the time is 124minutes, which is a large fraction of the 180 minute time period.

As to analysis of memory usage information, a method may includeanalyzing such information for a period of time, for example, byutilizing a calculation involving an exceed time and the period of time(e.g., a monitoring period) where the exceed time is the amount of timethat memory usage exceeds a threshold. As to a period of time, it maybe, as an example, greater than or equal to two days. A period of timemay optionally be determined by a method that aims to distinguish aregular day or days “off”, etc. Further, a method may optionallydistinguish work time, leisure time, etc. For example, a user may usecertain applications at work and other applications at home. For someusers, home usage may be more demanding on memory than work usage (e.g.,where home usage includes videos, games, etc.). A method may optionallyindicate, for example, that usage during “after work” hours wouldbenefit from a memory upgrade (e.g., a notification that reports withrespect to time of day or other trend detail).

As described herein, a method may include analyzing memory usageinformation by utilizing a calculation involving an exceed amount, wherethe exceed amount is the amount by which memory usage exceeds athreshold. In such an example, if a threshold is set to 50% of totalinstalled memory, the exceed amount may range from about 51% to about100%. A method may optionally include an upper value where memory usageabove that value is no longer distinguished (e.g., once usage reaches95%, higher values of 96% to 100% may be regarded as having lessinformational value). As another example, an exceed amount scheme mayoptionally be tiered (e.g., from 0-10% over threshold, from 11-20% overthreshold, etc.).

As described herein, a device, system, etc., may include analysiscircuitry to analyze memory usage information for a period of time, forexample, by utilizing a calculation involving an exceed time and theperiod of time, where the exceed time is the amount of time that memoryusage exceeds a threshold. In such an example, the period of time may beon the order of two or more days. As another example, a device, asystem, etc., may include analysis circuitry to utilize a calculationinvolving an exceed amount, where the exceed amount is the amount bywhich memory usage exceeds a threshold.

FIG. 8 shows an example of a method 810 that includes a provision block812 for providing data 812 and an analysis block 814 for analyzing data.In the example of FIG. 8, the analysis block 814 provides for triggerdeterminations (e.g., Trigger “N” or “Y”), for example, based on averagepercentage of memory used during a time period. Such a method may relyon data acquired using a call to an API, periodic execution of script,code, etc., to return a value for memory usage. In such a manner,notification circuitry may be controlled (e.g., “Y” triggers a notice).

FIG. 8 also shows an example of a device 801 configured with aninterface for communication via a network 805 for access to, forexample, historical data 860, manufacturer data 870, or a learningalgorithm 880. In such an example, the network may be a local privatenetwork, the Internet or other network. The historical data 860 may bedata stored in cloud storage. The manufacturer data 870 may includespecifications for memory, information as to where to buy memory, bestprice for memory, coupons, advertising, etc. The learning algorithm 880may provide for recommendations based in part on memory usage,optionally from multiple users (e.g., using the same or similar device,same or similar configurations, same or similar applications, etc.).

FIG. 9 shows an example of a device 910 that can include monitoringcircuitry 912, analysis circuitry 932 and report circuitry 942. Asshown, the report circuitry 942 can include one or more of a GUI module943, an email module 944, a browser launch module 945, a remote storagemodule 946, a text message module 947, and a voice message module 948.Such modules can allow the monitoring circuitry 942 to report in anappropriate manner, which may optionally be configured by a user, adevice manufacturer, a supplier of memory, an administrator, etc.

While various examples are described with respect to a device such as anotebook computer, devices such as smart devices, cell phones, tablets,etc., may also provide for monitoring and one or more memory upgradeoptions, for example, by including or operating in conjunction withcircuitry such as the circuitry 912, 932 and 942. Such circuitry mayoptionally be consolidated locally or remotely or distributed locally,remotely or locally and remotely.

As described herein, a method can include receiving memory configurationinformation that specifies a memory configuration; receiving memoryusage information for the memory configuration; analyzing the receivedmemory usage information for a period of time; and, responsive to theanalyzing, controlling notification circuitry configured to display agraphical user interface that presents information for physicallyaltering a specified memory configuration. In such a method, memoryusage information can include event information (e.g., event informationthat includes event times for memory usage crossing a memory usagethreshold), duration information (e.g., duration information thatincludes durations for memory usage above the memory usage threshold),etc.

As described herein, information for physically altering a specifiedmemory configuration can include a notification that adding more memorywill improve system performance. As to a memory configuration, it may bea RAM configuration, for example, one that specifies that RAM isinstalled in one or more hardware memory slots (e.g., of a device, asystem, etc.).

As described herein, a method can include controlling notificationcircuitry by issuing an instruction to display a memory upgrade optionvia a graphical user interface. In such an example, the memory upgradeoption may include replacing memory of the memory configuration, addingmemory without replacing memory of the memory configuration, or otheroption. Further, more than one option may be provided, for example, byissuing an instruction to display an additional memory upgrade optionvia the graphical user interface or other mechanism.

As described herein, one or more computer-readable media can includeprocessor-executable instructions to instruct a computer to: receivememory configuration information that specifies a memory configurationof the computer; receive memory usage information for the memoryconfiguration of the computer; and, responsive to an analysis of thereceived memory usage information for a period of time, controlnotification circuitry configured to optionally display information forupgrading a memory configuration of the device. Instructions may also beincluded to instruct the computer to receive memory usage information asevent times for memory usage crossing a memory usage threshold, asdurations for memory usage above a memory usage threshold, etc.Instructions may optionally be provided to instruct a computer to adjusta memory usage threshold, to adjust the period of time, etc.

As described herein, a system can include a processor; memory accessibleto the processor, the memory having a physical memory configuration; andnotification circuitry, responsive to trends in usage of the memory, tocall for rendering of a notice to alter a physical memory configuration(e.g., the physical memory configuration of the memory of the system).Such a system may include a display, the notification circuitry,responsive to trends in usage of the memory, to call for rendering thenotice to the display. A system may include a network interface wherenotification circuitry acts in response to trends in usage of the memoryto call for accessing a network via the network interface.

The term “circuit” or “circuitry” is used in the summary, description,and/or claims. As is well known in the art, the term “circuitry”includes all levels of available integration, e.g., from discrete logiccircuits to the highest level of circuit integration such as VLSI, andincludes programmable logic components programmed to perform thefunctions of an embodiment as well as general-purpose or special-purposeprocessors programmed with instructions to perform those functions.

While various examples of circuits or circuitry have been discussed,FIG. 10 depicts a block diagram of an illustrative example of a computersystem 1000. The system 1000 may be a desktop computer system, forexample, such as one of the ThinkCentre® or ThinkPad® series or IdeaPad®series of personal computers sold by Lenovo (US) Inc. of Morrisville,N.C., or a workstation computer, such as the ThinkStation®, which aresold by Lenovo (US) Inc. of Morrisville, N.C.; however, as apparent fromthe description herein, a device may include other features or only someof the features of the system 1000.

As shown in FIG. 10, the system 1000 includes a so-called chipset 1010.A chipset refers to a group of integrated circuits, or chips, that aredesigned to work together. Chipsets are usually marketed as a singleproduct (e.g., consider chipsets marketed under the brands INTEL®, AMD®,etc.).

In the example of FIG. 10, the chipset 1010 has a particulararchitecture, which may vary to some extent depending on brand ormanufacturer. The architecture of the chipset 1010 includes a core andmemory control group 1020 and an I/O controller hub 1050 that exchangeinformation (e.g., data, signals, commands, etc.) via, for example, adirect management interface or direct media interface (DMI) 1042 or alink controller 1044. In the example of FIG. 10, the DMI 1042 is achip-to-chip interface (sometimes referred to as being a link between a“northbridge” and a “southbridge”).

The core and memory control group 1020 include one or more processors1022 (e.g., single core or multi-core) and a memory controller hub 1026that exchange information via a front side bus (FSB) 1024. As describedherein, various components of the core and memory control group 1020 maybe integrated onto a single processor die, for example, to make a chipthat supplants the conventional “northbridge” style architecture.

The memory controller hub 1026 interfaces with memory 1040. For example,the memory controller hub 1026 may provide support for DDR SDRAM memory(e.g., DDR, DDR2, DDR3, etc.). In general, the memory 1040 is a type ofrandom-access memory (RAM). It is often referred to as “system memory”or “main memory” or “primary memory”.

The memory controller hub 1026 further includes a low-voltagedifferential signaling interface (LVDS) 1032. The LVDS 1032 may be aso-called LVDS Display Interface (LDI) for support of a display device1092 (e.g., a CRT, a flat panel, a projector, etc.). A block 1038includes some examples of technologies that may be supported via theLVDS interface 1032 (e.g., serial digital video, HDMI/DVI, displayport). The memory controller hub 1026 also includes one or morePCI-express interfaces (PCI-E) 1034, for example, for support ofdiscrete graphics 1036. Discrete graphics using a PCI-E interface hasbecome an alternative approach to an accelerated graphics port (AGP).For example, the memory controller hub 1026 may include a 16-lane (×16)PCI-E port for an external PCI-E-based graphics card. A system mayinclude AGP or PCI-E for support of graphics.

The I/O hub controller 1050 includes a variety of interfaces. Theexample of FIG. 10 includes a SATA interface 1051, one or more PCI-Einterfaces 1052 (optionally one or more legacy PCI interfaces), one ormore USB interfaces 1053, a LAN interface 1054 (more generally a networkinterface), a general purpose I/O interface (GPIO) 1055, a low-pin count(LPC) interface 1070, a power management interface 1061, a clockgenerator interface 1062, an audio interface 1063 (e.g., for speakers1094), a total cost of operation (TCO) interface 1064, a systemmanagement bus interface (e.g., a multi-master serial computer businterface) 1065, and a serial peripheral flash memory/controllerinterface (SPI Flash) 1066, which, in the example of FIG. 10, includesBIOS 1068 and boot code 1090. With respect to network connections, theI/O hub controller 1050 may include integrated gigabit Ethernetcontroller lines multiplexed with a PCI-E interface port. Other networkfeatures may operate independent of a PCI-E interface. One or moreinterfaces of the system 1000 may be suitable for receiving,transmitting or receiving and transmitting information with a sensorsuch as an accelerometer (e.g., to effectuate orientation or othercontrol).

The interfaces of the I/O hub controller 1050 provide for communicationwith various devices, networks, etc. For example, the SATA interface1051 provides for erasing, reading and writing information on one ormore drives 1080 such as HDDs, SDDs or a combination thereof. The I/Ohub controller 1050 may also include an advanced host controllerinterface (AHCI) to support one or more drives 1080. The PCI-E interface1052 allows for wireless connections 1082 to devices, networks, etc. TheUSB interface 1053 provides for input devices 1084 such as keyboards(KB), mice and various other devices (e.g., cameras, phones, storage,media players, etc.). As to cellular communication, the system 1000 caninclude cellular circuitry 1095. Such circuitry may be circuitrysuitable for a cell phone or other device that communicates via one ormore frequencies (e.g., TDMA, CDMA, GSM, etc.). The system 1000 mayoptionally include GPS circuitry for GPS communications and GPSfunctionality.

In the example of FIG. 10, the LPC interface 1070 provides for use ofone or more ASICs 1071, a trusted platform module (TPM) 1072, a superI/O 1073, a firmware hub 1074, BIOS support 1075 as well as varioustypes of memory 1076 such as ROM 1077, Flash 1078, and non-volatile RAM(NVRAM) 1079. With respect to the TPM 1072, this module may be in theform of a chip that can be used to authenticate software and hardwaredevices. For example, a TPM may be capable of performing platformauthentication and may be used to verify that a system seeking access isthe expected system.

The system 1000, upon power on, may be configured to execute boot code1090 for the BIOS 1068, as stored within the SPI Flash 1066, andthereafter processes data under the control of one or more operatingsystems and application software (e.g., stored in system memory 1040).An operating system may be stored in any of a variety of locations andaccessed, for example, according to instructions of the BIOS 1068.Again, as described herein, a device or other machine may include feweror more features than shown in the system 1000 of FIG. 10. For example,the device 110 of FIG. 1 may include some or all of the features shownin the system 1000 (e.g., as part of basic or control circuitry).

Conclusion

Although various examples of methods, devices, systems, etc., have beendescribed in language specific to structural features and/ormethodological acts, it is to be understood that the subject matterdefined in the appended claims is not necessarily limited to thespecific features or acts described. Rather, the specific features andacts are disclosed as examples of forms of implementing the claimedmethods, devices, systems, etc.

What is claimed is:
 1. A method comprising: receiving memoryconfiguration information that specifies a memory configuration;receiving memory usage information for the memory configuration;analyzing the received memory usage information for a period of time;and responsive to the analyzing, controlling notification circuitry thatcalls for display of a graphical user interface that presentsinformation for physically altering a specified memory configurationwherein the specified memory configuration comprises a random accessmemory configuration for random access memory installed in one or morehardware memory slots.
 2. The method of claim 1 wherein the memory usageinformation comprises event times for memory usage crossing a memoryusage threshold wherein memory usage crossing the memory usage thresholdcomprises an event and wherein a clock time associated with that eventis an event time.
 3. The method of claim 1 wherein the analyzing thereceived memory usage information for a period of time utilizes acalculation involving an exceed time and the period of time, wherein theexceed time is the amount of time that memory usage exceeds a threshold.4. The method of claim 3 wherein the period of time is greater than orequal to two days.
 5. The method of claim 1 wherein the analyzingutilizes a calculation involving an exceed amount, wherein the exceedamount is the amount by which memory usage exceeds a threshold.
 6. Themethod of claim 1 wherein the information for physically altering aspecified memory configuration comprises a notification that adding morememory will improve system performance.
 7. The method of claim 1 whereinthe controlling notification circuitry comprises issuing an instructionto display a memory upgrade option via the graphical user interface. 8.The method of claim 7 wherein the memory upgrade option comprisesreplacing memory of the memory configuration or adding memory withoutreplacing memory of the memory configuration.
 9. The method of claim 7further comprising issuing an instruction to display an additionalmemory upgrade option via the graphical user interface.
 10. One or morenon-transitory computer-readable media comprising processor-executableinstructions to instruct a computer wherein the instructions compriseinstructions to: receive memory configuration information that specifiesa memory configuration of the computer; receive memory usage informationfor the memory configuration of the computer; and responsive to ananalysis of the received memory usage information for a period of time,control notification circuitry that optionally calls for display ofinformation for upgrading a memory configuration of the computer. 11.The one or more non-transitory computer-readable media of claim 10further comprising instructions to instruct the computer to receivememory usage information as event times for memory usage crossing amemory usage threshold wherein memory usage crossing the memory usagethreshold comprises an event and wherein a clock time associated withthat event is an event time.
 12. The one or more non-transitorycomputer-readable media of claim 10 further comprising instructions toinstruct the computer to adjust a memory usage threshold.
 13. The one ormore non-transitory computer-readable media of claim 10 furthercomprising instructions to instruct the computer to adjust the period oftime.
 14. A system comprising: a processor; random access memoryaccessible to the processor, the random access memory having a physicalrandom access memory configuration; and notification circuitry,responsive to trends in usage of the random access memory at least inpart by the processor, to call for rendering of a notice to alter aphysical random access memory configuration.
 15. The system of claim 14further comprising a display, the notification circuitry, responsive totrends in usage of the random access memory, to call for rendering thenotice to the display.
 16. The system of claim 14 further comprising anetwork interface, the notification circuitry, responsive to trends inusage of the random access memory, to call for accessing a network viathe network interface to access information related to the random accessmemory of the system.
 17. The system of claim 14 further comprisinganalysis circuitry to analyze random access memory usage information fora period of time by utilizing a calculation involving an exceed time andthe period of time, wherein the exceed time is the amount of time thatrandom access memory usage exceeds a threshold.
 18. The system of claim17 wherein the period of time is greater than or equal to two days. 19.The system of claim 14 further comprising analysis circuitry to utilizea calculation involving an exceed amount, wherein the exceed amount isthe amount by which random access memory usage exceeds a threshold. 20.The system of claim 14 comprising a computer that comprises hardwareslots that are in receipt of the random access memory to thereby definein part the physical random access memory configuration of the computer.